package business;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import utils.HibernateUtil;

import entities.Auteur;
import entities.Boek;

public class AuteurZoeker implements IEntityZoeker<Auteur>
{
	List<Auteur> results;
	private boolean changed = true;
	
	private int id;
	private String naam;
	private String voornaam;
	private String tussenvoegsel;
	
	// Getters en Setters
	
	public int getId()
	{
		return id;
	}
	public void setId(int id)
	{
		changed = true;
		this.id = id;
	}
	public String getNaam()
	{
		return naam;
	}
	public void setNaam(String naam)
	{
		changed = true;
		this.naam = naam;
	}
	public String getVoornaam()
	{
		return voornaam;
	}
	public void setVoornaam(String voornaam)
	{
		changed = true;
		this.voornaam = voornaam;
	}
	public String getTussenvoegsel()
	{
		return tussenvoegsel;
	}
	public void setTussenvoegsel(String tussenvoegsel)
	{
		changed = true;
		this.tussenvoegsel = tussenvoegsel;
	}
	
	// Methoden

	@Override
	public List<Auteur> zoek()
	{
		if(changed)
		{
			Session session = HibernateUtil.getSessionFactory().openSession();
			String queryString = "FROM entities.Auteur";
			
			queryString += getWhereStatements();
			
			Query query = session.createQuery(queryString);
			
			results = query.list();
			
			session.close();
			
			changed = false;
		}
		
		return results;
	}

	private String getWhereStatements()
	{
		String wh = "";
		
		if(naam != null && !naam.isEmpty())
		{
			if(!wh.isEmpty())
			{
				wh += " AND";
			}
			
			wh += " naam = \'" + naam + "\'";
		}
		if(voornaam != null && !voornaam.isEmpty())
		{
			if(!wh.isEmpty())
			{
				wh += " AND";
			}
			
			wh += " voornaam = \'" + voornaam + "\'";
		}
		if(tussenvoegsel != null && !tussenvoegsel.isEmpty())
		{
			if(!wh.isEmpty())
			{
				wh += " AND";
			}
			
			wh += " tussenvoegsel = \'" + tussenvoegsel + "\'";
		}
		
		if(!wh.isEmpty())
		{
			wh = " WHERE" + wh;
		}
		
		return wh;
	}
	
}
